home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
vdl020d.zip
/
VOUTOCRT.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
4KB
|
346 lines
{ VOutOCRT Copyright 1991,1992 Visionix ALL RIGHTS RESERVED }
Procedure OpCRTOutDriverProc( ODP : POutDriverPacket );
Type
TCharBuff = Array[1..32768] of CHAR;
PCharBuff = ^TCharBuff;
Var
KeyBufHead : INTEGER absolute $0000:$041A;
KeyBufTail : INTEGER absolute $0000:$041C;
IData : POutDriverIData;
Z : INTEGER;
BEGIN
IData := ODP^.ID;
If ODP^.Status = 0 Then
BEGIN
Case ODP^.Func Of
ODF_DriverNew:
BEGIN
IF @ODP^.OutDriverProc = @OpCRTOutDriverProc Then
BEGIN
New( Idata );
IData^.Name := ODP^.Name^;
IData^.Off := 0;
ODP^.Status := ODS_Install+ODS_Changed;
ODP^.ID := IData;
END;
END;
{----}
ODF_DriverOff:
BEGIN
If ODP^.Name^ = IData^.Name Then
BEGIN
Inc( Idata^.Off );
END;
END;
{----}
ODF_DriverOn:
BEGIN
If ODP^.Name^ = IData^.Name Then
BEGIN
If Idata^.Off <> 0 Then
Dec( Idata^.Off );
END;
END;
{----}
ODF_DriverDispose:
BEGIN
If ODP^.Name^ = IData^.Name Then
BEGIN
{RemoveFromOutDriverStack }
Dispose( IData );
END;
END;
{----}
ODF_WriteChar:
BEGIN
Write( ODP^.Ch );
END;
{----}
ODF_WriteBlock:
BEGIN
For Z:=1 to ODP^.Size Do
Write( PCharBuff( ODP^.Buff )^[Z] );
END;
{----}
ODF_WriteVert:
BEGIN
For Z:=1 to ODP^.Size Do
BEGIN
Write( PCharBuff( ODP^.Buff )^[Z] );
If Z<>ODP^.Size Then
OpCrt.GotoXY( OpCrt.WhereX-1, OpCrt.WhereY+1 );
END;
END;
{----}
ODF_ClrEOL:
BEGIN
OpCrt.ClrEOL;
END;
{----}
ODF_ClrScr:
BEGIN
OpCrt.ClrScr;
END;
{----}
ODF_DelLine:
BEGIN
OpCrt.DelLine;
END;
{----}
ODF_InsLine:
BEGIN
OpCrt.InsLine;
END;
{----}
ODF_GotoXY:
BEGIN
OpCrt.GotoXY( ODP^.X1, ODP^.Y1 );
END;
{----}
ODF_Window:
BEGIN
OpCrt.Window( ODP^.X1, ODP^.Y1,
ODP^.X2, ODP^.Y2 );
END;
{----}
ODF_ColorText:
BEGIN
OpCrt.TextColor( ODP^.TheColor );
END;
{----}
ODF_ColorBack:
BEGIN
OpCrt.TextBackGround( ODP^.TheColor );
END;
{----}
ODF_GetWin:
BEGIN
ODP^.X1 := Lo( OpCrt.WindMin );
ODP^.Y1 := Hi( OpCrt.WindMin );
ODP^.X2 := Lo( OpCrt.WindMax );
ODP^.Y2 := Lo( OpCrt.WindMax );
ODP^.Status := ODS_Changed;
END;
{----}
ODF_GetAttr:
BEGIN
ODP^.Attr := TextAttr;
ODP^.Status := ODS_Changed;
END;
{----}
ODF_SetAttr:
BEGIN
TextAttr := ODP^.Attr;
END;
{----}
ODF_GetXY:
BEGIN
ODP^.X1 := OpCrt.WhereX;
ODP^.Y1 := OpCrt.WhereY;
ODP^.Status := ODS_Changed;
END;
{----}
ODF_GetNumScreens:
BEGIN
ODP^.Screens := 8;
ODP^.Status := ODS_Changed;
END;
{----}
ODF_GoScreen:
BEGIN
END;
{----}
ODF_SetCursorType:
BEGIN
END;
{----}
ODF_DrawHLine:
BEGIN
END;
{----}
ODF_DrawVLine:
BEGIN
END;
{----}
ODF_DrawHLine:
BEGIN
END;
{----}
ODF_DrawBox:
BEGIN
END;
{----}
ODF_ReadChar:
BEGIN
END;
{----}
ODF_ReadAttr:
BEGIN
END;
{----}
Else { Case Func Of }
END;
END; { If ODP^.Status = 0 }
END;
{--------------------------------------------------------------------------}